package data_structure.List;


import java.util.List;

/**
 * 1.ArrayList实现了RandomAccess接口，表明ArrayList支持随机访问
 * 2.ArrayList实现了Cloneable接口，表明ArrayList是可以clone的
 * 3.ArrayList实现了Serializable接口，表明ArrayList是支持序列化的
 * 4.和Vector不同，ArrayList不是线程安全的，在单线程下可以使用，在多线程中可以选择Vector或者CopyOnWriteArrayList
 * 5.ArrayList底层是一段连续的空间，并且可以动态扩容，是一个动态类型的顺序表
 *
 */
public class ArrayList {
    public static void main(String[] args) {
        //ArrayList创建，推荐写法
        //构造一个空的列表
        List<Integer> list1 = new java.util.ArrayList<>();

        //构造一个具有10个容量的列表
        List<Integer> list2 = new java.util.ArrayList<>(10);
        list2.add(1);
        list2.add(2);
        list2.add(3);
        //list2.add("hello");编译失败，List<Integer>已经限定了list2只能储存整形元素

        //list3构造好之后，与list中的元素一致
        //List<Integer> list3 = new ArrayList<>(list2);

        //避免省略类型，否则：任意类型的元素都可以存放，使用时会发生错误
        List list4 = new java.util.ArrayList();
        list4.add("sdf");
        list4.add(111);
    }
}